הכנסת רק מספרים
עדיפות ל JQ
22 תשובות
אירוע keypress, בדיקה האם הכפתור שנלחץ הוא מספר, אם לא, return false.
OK תודה
אבל לא הבנתי איך אני יכול לעשות שלתיבה יכניסו כמה אותיות שרוצים אבל רק 4 מספרים..
מאפיין maxlength ל-input.
התכוונתי לכך שיהיה ניתן להכניס לתיבה רק 4 מספרים.
אבל אותיות שלא תיהיה להם הגבלה
כי ערכת אותה.
בכל מקרה, בתנאי שבודק האם מה שהוכנס הוא מספר תצטרך גם לבדוק האם בתיבת הטקסט יש רק 4 ספרות.
אלגוריתם:
תפיסת לחיצת כפתור onkeypress
בדיקה על כל תו האם הוא מספר?
כן-תוסיף למונה המספרים 1 ותבדוק אם הוא שווה ל4 אם שווה ל4 ..עצור!
לא-קבל את הקלט והמשך
:)
כל לחיצה במקלדת מאופיינת בקוד אחר..
תבדוק אם שווה למחיקה אם כן תבדוק מה הוא מחק לפי מיקום התו..
או
אם מספר התווים בקלט קטן מהפעם האחרונה שנבדק
אני הייתי שומר את המיקום של המספרים בנפרד ואחרי זה יכול לבדוק בקלות האם זה היה מספר שהוא מחק וככה אפשר לחסר ממונה המספרים
function numbersonly(myfield, e, dec)
{
var numbernum = 0;
var key;
var keychar;
if (window.event)
key = window.event.keyCode;
else if (e)
key = e.which;
else
return true;
keychar = String.fromCharCode(key);
// control keys
if ((key==null) || (key==0) || (key==8) ||
(key==9) || (key==13) || (key==27) ){
return true;
numbernum = numbernum - 1;
}
// numbers
else if ((("0123456789").indexOf(keychar) > -1)){
if(numbernum == 4){
return false;
}else{
return true;
numbernum = numbernum + 1;
}
}
// decimal point jump
else if (dec && (keychar == "."))
{
myfield.form.elements[dec].focus();
return true;
}
else
return true;
}
</script>
לקחתי קוד מוכן וניסיתי להתאים אותו למה שאני צריך
ולא עובד
הנה קוד מוכן:
var key = e.which ? e.which : e.keyCode;
if ((key >= 48 && key <= 57 || key >= 96 && key <= 105) && $(this).val().length - $(this).val().replace(/\d/g, '').length < 4) {
return true;
}
return false;
});
התנאי כאן מורכב משלושה ביטיים (יש שם חמישה אבל חילקתי את זה לעיקריים):
(
ביטוי ראשון - בודק האם הכפתור שנלחץ הוא אחד מהמספרים למעלה במקלדת (מעל האותיות).
או
ביטוי שני - בדוק האם הכפתור שנלחץ הוא אחד מהמספרים ב-numpad. המספרים שבצד ימין.
)
וגם
ביטוי שלישי - בודק שמספר הספרות בתיבת הטקסט קטן מ-4.
הוא אל בדיוק עובד.
אי אפשר לכניס תוים מסויימים כמו R
וגם אי אפשר למחוק את הטקסט.
איך ניתן לתקן?
לא משנה תיקנתי אותו הנה המתוקן:
var key = e.which ? e.which : e.keyCode;
if ((key >= 48 && key <= 57 || key >= 95 && key <= 105)) {
if($(this).val().length - $(this).val().replace(/\d/g, '').length < 4){
return true;
}else{
return false;
}
}
return true;
});
נכון, שכחתי שאתה רוצה שיהיה אפשר להכניס כמה אותיות שרוצים, אבל רק 4 מספרים.
var key = e.which ? e.which : e.keyCode;
if ($(this).val().length - $(this).val().replace(/\d/g, '').length >= 4 && (key >= 48 && key <= 57 || key >= 96 && key <= 105)) {
return false;
}
return true;
});
ערכתי, שכחתי להחליף את הסימון.
איך אפשר לדעת איזה מספר זה איזה מקש?לדוגמה עם אני רצה את כל המקשיים שהם אותיות באגלית
איך אני מגלה את המספרים שלהם?
תחפש בגוגל, יש טבלאות של זה. למרות שאני די משוכנע שאפשר להפוך את המספר הזה לאות המתאימה לו וככה זה הרבה יותר קל.
הנה ביטוי רגולרי שאמור לעבוד, אם מה שאתה רוצה זה כמות לא מוגבלת של אותיות באנגלית, ומקסימום 4 מספרים: